package com.sourcetrip.algorithm.sort.selection;

import com.sourcetrip.algorithm.abs.AbstractSort;

/**
 * @author: xiaomi
 * @date: 2020/12/27
 * @description: 十大排序之second 选择排序
 * 思路：
 * 通过比较，选出最大的值的索引，将其交换到最后一个位置。
 * 重复上述步骤。
 * 可以看成是【冒泡排序的算法改进版本】
 */
public class SelectionSortV0 extends AbstractSort {


	@Override
	protected int[] sortArr(int[] arr) {

		int index = 0, value = arr[index];
		for (int end = arr.length - 1; end > 0; end--) {
			for (int i = 1; i <= end; i++) {
				//当后面的大于等于前面的时候，就进行索引值替换，保证稳定性
				if (value <= arr[i]) {
					//替换变量值
					value = arr[i];
					//替换索引值
					index = i;
				}
			}
			//最后进行交换
			swap(arr, index, end);
			index = 0;
			value = arr[index];
		}
		return arr;
	}
}
